A service refers to a defined set of functionality or capabilities that is made available and accessible in a network environment. Devices and/or software applications transmit requests to the service which performs the desired function for the particular device or application.
Services are employed in a wide variety of technical environments. For example, services are used extensively in Web related technologies. A Web service with a particular function may be made available at a particular network address. Systems that require the particular functionality may transmit a request via the Web to the web service, which then performs the desired function. In an example scenario, a Web service may be employed by one system to exchange data with an otherwise incompatible system.
Services are also widely used in the context of machine to machine (M2M) and internet of things (IoT) technologies. Machine to machine (M2M) is a broad label that is used to describe technology that enables networked devices to exchange information and perform actions without the manual assistance of humans. The Internet of Things (IoT) refers to a scenario in which objects, including machines and components of machines, are provided with unique identifiers and the ability to automatically transfer data between objects over a network without requiring human-to-human or human-to-computer interaction. Services are used to provide access to M2M capabilities including those related to, for example, security, charging, and data management.
Services may be thought of as existing in a “service layer” of a network architecture. The service layer is positioned on top of the network layer, which enables the services in the services layer to make use of the capabilities of the network layer. The services layer is positioned below a client application layer. Client applications make requests to the services in the services layer in order to access the functionality made available by the services. Accordingly, the service layer is a software middleware layer that supports value-added service capabilities through a set of application programming interfaces and underlying networking interfaces.
Several organizations have attempted to define standards for service operations. For example, with respect to M2M communications and services, oneM2M, the Open Mobile Alliance (OMA), and OMA Lightweight M2M (LWM2M), have sought to standardize aspects of service implementations. These existing M2M/IoT service layer standards (e.g., oneM2M, OMA, LWM2M) define a set of service capabilities that can be supported by individual service layers hosted by service nodes in a network (e.g., servers, gateways, devices).
While the use of services has been widely adopted, managing services is largely a manual activity. Creating and modifying the services often requires human intervention to provision individual machines with the appropriate data and software in order to provide the desired services.